 <!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="utf-8" />
	<title>多维数组排序</title>
	<base href="http://localhost/notebook/" />
	<link rel="stylesheet" href="css/zui.min.css" />
</head>
<body>
<?php
/**
 * 这个示例定义了一个学生分数的二维数组，并分别按学生名字和分数排序
 * 注意分数大小的排序
 * Created by PhpStorm.
 * User: ford
 * Date: 14-9-13
 * Time: 上午10:04
 */
//定义学生数组
$student = array(
	256	=>array('name'=>'Jone', 'grade'=>98.5),
	2	=>array('name'=>'Vance', 'grade'=>85.1),
	9	=>array('name'=>'Stephen', 'grade'=>94.0),
	364	=>array('name'=>'Steve', 'grade'=>85.1),
	68	=>array('name'=>'Rob', 'grade'=>74.6));

echo '学生列表<br />';
echo '<pre>';
print_r($student);
echo '</pre>';
echo '按姓名进行排序，区分大小写，使用uasort()保留完整关键字<br />';

/**
 * @param $x
 * @param $y
 * @return int
 */
function name_sort($x, $y)
{
	return strcmp($x['name'], $y['name']);
}

//uasort($student, 'name_sort');
//使用匿名函数试下
uasort($student, function($x, $y) {
	return strcmp($x['name'], $y['name']);
});
echo '<pre>';
print_r($student);
echo '</pre>';

echo '按分数降序进行排序，这个使用的是usort，一维数组索引丢失<br />';

function grade_sort($x, $y)
{
	return ($x['grade'] < $y['grade']);
}

usort($student, 'grade_sort');

echo '<pre>';
print_r($student);
echo '</pre>';

echo '使用匿名函数的示例，这次按倒序，经过上次排序，数组索引已丢失：';
	uasort($student, function($y,$x){
		return strcasecmp($x['name'], $y['name']);
	});

	echo '<pre>';
	print_r($student);
	echo '</pre>';
?>
</body>
</html>